﻿using UnityEngine;

namespace Nomo.UnityCoreModule
{
    /// <summary>
    /// 颜色提供者。
    /// </summary>
    public static class ColorProvider
    {
        private const  float RepeatTime = 10F;                                                          // 循环一次的时间。
        private static float RepeatedH        => Mathf.Repeat(Time.unscaledTime / RepeatTime, 1F);      // 在色轮上逆时针循环的色度。
        private static float InverseRepeatedH => 1F - Mathf.Repeat(Time.unscaledTime / RepeatTime, 1F); // 在色轮上顺时针循环的色度。
        private const  float S = 1F;                                                                    // 饱和度。
        private const  float V = 1F;                                                                    // 纯度。

        /// <summary>
        /// 获取一个颜色，这个颜色会随着真实时间在色轮上不断循环。
        /// </summary>
        public static Color HueRepeatedColor => Color.HSVToRGB(RepeatedH, S, V, false);

        /// <summary>
        /// 获取一个颜色，这个颜色会随着真实时间在色轮上不断循环。
        /// </summary>
        public static Color HueInverseRepeatedColor => Color.HSVToRGB(InverseRepeatedH, S, V, false);
    }
}
